import requests
from py02_tpshop_api import TpshopLoginApi


class TestTpshopLogin(object):
    # 定义为类属性。 使用时，类属性 可以用 类名、实例、self、cls 均可以引用
    session = None

    def setup(self):
        # 创建 session 实例
        self.session = requests.Session()

        # 调用自己封装的API，发送 获取验证码 请求
        TpshopLoginApi.get_verify(self.session)

    # 定义 测试方法 - 登录成功
    def test01_login_success(self):
        # 准备 请求体数据
        req_data = {"username": "13122223333", "password": "123456", "verify_code": "8888"}
        # 调用自己封装的API，发送 登录 请求
        resp = TpshopLoginApi.login(self.session, req_data)
        # 打印响应结果
        print("登录成功：", resp.json())

        # 断言
        assert 200 == resp.status_code
        assert 1 == resp.json().get("status")
        assert "登陆成功" in resp.json().get("msg")

    # 定义 测试方法 - 密码错误
    def test02_pwd_err(self):
        # 准备 请求体数据
        req_data = {"username": "13122223333", "password": "12345689", "verify_code": "8888"}
        # 调用自己封装的API，发送 登录 请求
        resp = TpshopLoginApi.login(self.session, req_data)
        # 打印响应结果
        print("密码错误：", resp.json())

        # 断言
        assert 200 == resp.status_code
        assert -2 == resp.json().get("status")
        assert "密码错误" in resp.json().get("msg")

    # 定义 测试方法 - 验证码错误
    def test03_verify_err(self):
        # 准备 请求体数据
        req_data = {"username": "13122223333", "password": "123456", "verify_code": "8976"}
        # 调用自己封装的API，发送 登录 请求
        resp = TpshopLoginApi.login(self.session, req_data)
        # 打印响应结果
        print("验证码错误：", resp.json())

        # 断言
        assert 200 == resp.status_code
        assert 0 == resp.json().get("status")
        assert "验证码错误" in resp.json().get("msg")
